package lelouet.datacenter.simulation;

import java.util.List;

public interface Event {

	/** the different kinds of notifications, and how important they are */
	public enum EventStates {
		RESOLVED, STATEMENT, WARNING, CRITICAL
	}

	/** @return the level of the event */
	public EventStates getState();

	/**
	 * make an handler process this event.
	 * 
	 * @return the list of events this handler generated when processing this
	 */
	public abstract List<Event> apply(EventHandler handler);

	/**
	 * @return the time this event was created at. This time is defined by the
	 *         element that created this event
	 */
	public long getTime();
}
